#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <string.h>
#include <signal.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <limits.h>

typedef struct
{
    long int nType;
    char szText[256];
    char ID[4];
} MSG;

int main()
{
    key_t Ikey;
    int nMsgId = 4;
    if ((Ikey = ftok("/etc/profile", 1)) == -1)
    {
        perror("ftok");
        exit(1);
    }
    if ((nMsgId = msgget(Ikey, IPC_CREAT | 0666)) == -1)
    {
        perror("ftok");
        exit(2);
    }
    printf("create message queue, msgid=%d\n", nMsgId);
    MSG msg;
    memset(&msg, 0x00, sizeof(MSG));
    msg.nType = 2;
    strcpy(msg.szText, "ls\0");
    if (msgsnd(nMsgId, (void *)&msg, strlen(msg.szText), 0) < 0)
    {
        perror("msgsnd");
    }
    return 0;
}
